// 没有defer，async指定js脚本会立即执行
// 有async，加载和渲染后面的元素将和js脚本 加载和执行 并行执行（异步）
// 有defer 加载和渲染后面的元素将和js脚本  加载 并行执行（异步）所有元素解析完成后才会执行 有一定顺序
// setTimeout(min=4ms) ,setInterval(min=10ms)
// const promise = new Promise((reslove, reject) => {
//     console.log(1);
//     reslove()
//     console.log(2);
// })
// promise.then(() =>
//     console.log(3)
// )
// console.log(4);
let counter = function () {
    let num = 0
    function changenum(val) {
        num += val
    }
    return {
        add: function(){
            changenum(1)
        },
        reduce: function(){
            changenum(-1)
        },
        num:function()
        {
            return num
        }
    }
}
let counter1=counter()
let counter2=counter()

counter1.add()
counter1.add()

counter2.add()
console.log(counter1.num());
console.log(counter2.num());